Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nav experiment #1603

Merged
merged 45 commits into from
Jan 14, 2025
Merged

Nav experiment #1603

merged 45 commits into from
Jan 14, 2025

Conversation

thejessewinton
Copy link
Contributor

@thejessewinton thejessewinton commented Jan 6, 2025

What does this PR do?

Implement A/B experiment for sticky navigation.

Explanation

  1. On initial load, we pull in the feature flag from PostHog in layout.server.ts, assigning a distinctId based off of available request headers. This is persisted in memory. The data from the feature flag for a given user is returned.
  2. The distinctId is passed into a child layout.ts via the data, and in the browser we initialize the PostHog client that tracks events like button clicks etc. with the distinctId that is created in the server layout. This is also explicitly persisted in memory. All the data is then passed to a root page.ts.
  3. Via $page.data, we access the isStickyNav variable in Main.svelte which is the parent wrapper for pages with the default header.

API

Inside of src/lib/experiments.ts there's a new function called getFeatureFlag; when we add new experiments via the PostHog UI, we should add the key, as well as the variant names to the experiments object, which will ensure that we always have typesafety, and parity when we use our feature flags.

Test Plan

Manual

Related PRs and Issues

(If this PR is related to any other PR or resolves any issue or related to any issue link all related PR and issues here.)

Have you read the Contributing Guidelines on issues?

(Write your answer here.)

@thejessewinton thejessewinton merged commit ee54ebb into main Jan 14, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants